# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.DFAReporting.V4.Model.FloodlightConfiguration do
  @moduledoc """
  Contains properties of a Floodlight configuration.

  ## Attributes

  *   `accountId` (*type:* `String.t`, *default:* `nil`) - Account ID of this floodlight configuration. This is a read-only field that can be left blank.
  *   `advertiserId` (*type:* `String.t`, *default:* `nil`) - Advertiser ID of the parent advertiser of this floodlight configuration.
  *   `advertiserIdDimensionValue` (*type:* `GoogleApi.DFAReporting.V4.Model.DimensionValue.t`, *default:* `nil`) - Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
  *   `analyticsDataSharingEnabled` (*type:* `boolean()`, *default:* `nil`) - Whether advertiser data is shared with Google Analytics.
  *   `customViewabilityMetric` (*type:* `GoogleApi.DFAReporting.V4.Model.CustomViewabilityMetric.t`, *default:* `nil`) - Custom Viewability metric for the floodlight configuration.
  *   `exposureToConversionEnabled` (*type:* `boolean()`, *default:* `nil`) - Whether the exposure-to-conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
  *   `firstDayOfWeek` (*type:* `String.t`, *default:* `nil`) - 
  *   `id` (*type:* `String.t`, *default:* `nil`) - ID of this floodlight configuration. This is a read-only, auto-generated field.
  *   `idDimensionValue` (*type:* `GoogleApi.DFAReporting.V4.Model.DimensionValue.t`, *default:* `nil`) - Dimension value for the ID of this floodlight configuration. This is a read-only, auto-generated field.
  *   `inAppAttributionTrackingEnabled` (*type:* `boolean()`, *default:* `nil`) - Whether in-app attribution tracking is enabled.
  *   `kind` (*type:* `String.t`, *default:* `nil`) - Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightConfiguration".
  *   `lookbackConfiguration` (*type:* `GoogleApi.DFAReporting.V4.Model.LookbackConfiguration.t`, *default:* `nil`) - Lookback window settings for this floodlight configuration.
  *   `naturalSearchConversionAttributionOption` (*type:* `String.t`, *default:* `nil`) - Types of attribution options for natural search conversions.
  *   `omnitureSettings` (*type:* `GoogleApi.DFAReporting.V4.Model.OmnitureSettings.t`, *default:* `nil`) - Settings for Campaign Manager Omniture integration.
  *   `subaccountId` (*type:* `String.t`, *default:* `nil`) - Subaccount ID of this floodlight configuration. This is a read-only field that can be left blank.
  *   `tagSettings` (*type:* `GoogleApi.DFAReporting.V4.Model.TagSettings.t`, *default:* `nil`) - Configuration settings for dynamic and image floodlight tags.
  *   `thirdPartyAuthenticationTokens` (*type:* `list(GoogleApi.DFAReporting.V4.Model.ThirdPartyAuthenticationToken.t)`, *default:* `nil`) - List of third-party authentication tokens enabled for this configuration.
  *   `userDefinedVariableConfigurations` (*type:* `list(GoogleApi.DFAReporting.V4.Model.UserDefinedVariableConfiguration.t)`, *default:* `nil`) - List of user defined variables enabled for this configuration.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :accountId => String.t() | nil,
          :advertiserId => String.t() | nil,
          :advertiserIdDimensionValue => GoogleApi.DFAReporting.V4.Model.DimensionValue.t() | nil,
          :analyticsDataSharingEnabled => boolean() | nil,
          :customViewabilityMetric =>
            GoogleApi.DFAReporting.V4.Model.CustomViewabilityMetric.t() | nil,
          :exposureToConversionEnabled => boolean() | nil,
          :firstDayOfWeek => String.t() | nil,
          :id => String.t() | nil,
          :idDimensionValue => GoogleApi.DFAReporting.V4.Model.DimensionValue.t() | nil,
          :inAppAttributionTrackingEnabled => boolean() | nil,
          :kind => String.t() | nil,
          :lookbackConfiguration =>
            GoogleApi.DFAReporting.V4.Model.LookbackConfiguration.t() | nil,
          :naturalSearchConversionAttributionOption => String.t() | nil,
          :omnitureSettings => GoogleApi.DFAReporting.V4.Model.OmnitureSettings.t() | nil,
          :subaccountId => String.t() | nil,
          :tagSettings => GoogleApi.DFAReporting.V4.Model.TagSettings.t() | nil,
          :thirdPartyAuthenticationTokens =>
            list(GoogleApi.DFAReporting.V4.Model.ThirdPartyAuthenticationToken.t()) | nil,
          :userDefinedVariableConfigurations =>
            list(GoogleApi.DFAReporting.V4.Model.UserDefinedVariableConfiguration.t()) | nil
        }

  field(:accountId)
  field(:advertiserId)
  field(:advertiserIdDimensionValue, as: GoogleApi.DFAReporting.V4.Model.DimensionValue)
  field(:analyticsDataSharingEnabled)
  field(:customViewabilityMetric, as: GoogleApi.DFAReporting.V4.Model.CustomViewabilityMetric)
  field(:exposureToConversionEnabled)
  field(:firstDayOfWeek)
  field(:id)
  field(:idDimensionValue, as: GoogleApi.DFAReporting.V4.Model.DimensionValue)
  field(:inAppAttributionTrackingEnabled)
  field(:kind)
  field(:lookbackConfiguration, as: GoogleApi.DFAReporting.V4.Model.LookbackConfiguration)
  field(:naturalSearchConversionAttributionOption)
  field(:omnitureSettings, as: GoogleApi.DFAReporting.V4.Model.OmnitureSettings)
  field(:subaccountId)
  field(:tagSettings, as: GoogleApi.DFAReporting.V4.Model.TagSettings)

  field(:thirdPartyAuthenticationTokens,
    as: GoogleApi.DFAReporting.V4.Model.ThirdPartyAuthenticationToken,
    type: :list
  )

  field(:userDefinedVariableConfigurations,
    as: GoogleApi.DFAReporting.V4.Model.UserDefinedVariableConfiguration,
    type: :list
  )
end

defimpl Poison.Decoder, for: GoogleApi.DFAReporting.V4.Model.FloodlightConfiguration do
  def decode(value, options) do
    GoogleApi.DFAReporting.V4.Model.FloodlightConfiguration.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.DFAReporting.V4.Model.FloodlightConfiguration do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
